import requests
import json
import sys


def search(xinput, k=1, port=7700):
    """用函数对运行在127.0.0.1:7760上的Flask FAISS程序进行封装。"""
    # 组织输入
    xjson = dict()
    xjson['input'] = xinput
    xjson['k'] = k

    # 获取输出
    res = requests.post(f'http://127.0.0.1:{port}/api', json=xjson)

    # 解析输出
    xjson = json.loads(res.text)

    # 返回结果
    return xjson


if '__main__' == __name__:

    # 调用封装的函数
    # 胆管癌的影像学检查是超声检查。
    # 乙型肝炎的药物治疗是利尿剂。
    # 失眠症的临床表现是完成艰巨任务时无法集中注意力。
    # 失眠的临床表现
    # 用户手部有感染。
    
    
    def _main():
        argc = len(sys.argv)
        if argc >= 2:
            port = sys.argv[1]
        else:
            port = 7700

        print(f'Unit test for FAISS in table. Input q to quit.')
        
        while True:
            print('Input: (Input q to quit.)')
            xinput = input().strip()
            if 'q' == xinput.lower():
                print('Bye!')
                break
            
            xoutput = search(xinput, 10, port)
            D = xoutput['D']
            I = xoutput['I']
            xmd5s = xoutput['md5s']
            xsents = xoutput['sentences']
            for i, d_val in enumerate(D):
                print(i, d_val, I[i], xsents[i], xmd5s[i])

    _main()
